// 导入express
const express = require('express')
// 创建服务器的实际对象
const app = express()
const joi=require('joi')
// 导入并配置cors中间件
const cors = require('cors')
app.use(cors())
app.use(express.urlencoded({ extended: false }))
// 一定要在路由之前封装
app.use((req,res,next) => {
res.cc=function(err,status=1){
    res.send({
        status,
         // 状态描述，判断 err 是 错误对象 还是 字符串
        message:err instanceof Error ? err.message :err
    })
}
next()
})
// ---------------在路由之前配置token解析文件------------------
const expressJWT=require('express-jwt')
const config=require('./config')
app.use(expressJWT({secret:config.jwtSecretKey,algorithms:['HS256']}).unless({path:config.unt}))

// 导入并使用用户路由器模块
const userRouter = require('./router/user')
app.use('/api', userRouter)
const userinfoRouter=require('./router/userinfo')
app.use('/my', userinfoRouter)
// 导入并使用文章路由模块
const articleRouter = require('./router/article')
app.use('/my/article', articleRouter)

//导入并使用发布文章路由模块
const gainRouter = require("./router/gain")
app.use("/my/gain",gainRouter)
//导入并使用获取文章  链表路由模块
app.use("/my/obain",gainRouter)
//导入使用  文章内容
app.use("/my/reserve",gainRouter)
//评论  发送
const hearRouter = require("./router/hear")
app.use("/my/hear",hearRouter)
app.use("/my/hand",hearRouter)




app.use((err,_req,res,next)=>{
    // 验证失败的错误
    if (err instanceof joi.ValidationError){
        return res.cc(err)
    } 
    // 捕获身份认证失败的错误
  if (err.name === 'UnauthorizedError'){
    return res.cc('身份认证失败！')
  }
    // 未知错误
    res.cc(err)
    next()
})

// 托管静态资源文件
app.use('/uploads', express.static('./uploads'))
// 启动服务器
app.listen(3007, () => {
    console.log(' http://127.0.0.1:3007')
})
